using MediatR;
using ProduceBasicData.Api.DTO;
using ProduceBasicData.ErrorCode;

namespace ProduceBasicData.Api.Application.Command.WorkOrderProgress
{
    /// <summary>
    /// 获取工单实时进度命令类
    /// </summary>
    public class GetWorkOrderProgressCommand : IRequest<ApiResult<WorkOrderProgressChartDto>>
    {
        /// <summary>
        /// 工单号（可选，用于筛选特定工单）
        /// </summary>
        public string? OrderNo { get; set; }

        /// <summary>
        /// 工单状态（可选，1初始化,2待审批,3已开工,4已完成）
        /// </summary>
        public int? Status { get; set; }

        /// <summary>
        /// 客户ID（可选）
        /// </summary>
        public int? CustomerId { get; set; }

        /// <summary>
        /// 产品ID（可选）
        /// </summary>
        public int? ProductId { get; set; }

        /// <summary>
        /// 产线ID（可选）
        /// </summary>
        public int? ProductionId { get; set; }

        /// <summary>
        /// 开始日期（可选）
        /// </summary>
        public DateTime? StartDate { get; set; }

        /// <summary>
        /// 结束日期（可选）
        /// </summary>
        public DateTime? EndDate { get; set; }

        /// <summary>
        /// 排序方式（1按工单号，2按状态，3按进度，4按创建时间）
        /// </summary>
        public int SortType { get; set; } = 4; // 默认按创建时间

        /// <summary>
        /// 排序方向（1升序，2降序）
        /// </summary>
        public int SortDirection { get; set; } = 2; // 默认降序

        /// <summary>
        /// 页容量（0表示不分页）
        /// </summary>
        public int PageSize { get; set; } = 10;

        /// <summary>
        /// 是否包含图表数据
        /// </summary>
        public bool IncludeChartData { get; set; } = true;

        /// <summary>
        /// 是否只显示进行中的工单
        /// </summary>
        public bool OnlyInProgress { get; set; } = false;
    }
}
